package com.coder.rental.security;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

import java.security.SecureRandom;

@Configuration
@Data
public class PasswordConfig {
    @Value("${encoder.ctype.strength}")
    private int strength=6;
    @Value("${encoder.ctype.secret}")
    private String secret="123456";

    /**
     * 创建并返回一个BCryptPasswordEncoder实例。
     * 此密码编码器使用指定的加密强度strength和基于secret参数生成的SecureRandom实例。
     *
     * @return BCryptPasswordEncoder 返回一个配置好的BCryptPasswordEncoder实例。
     */
    //强散列密码解析器
    @Bean
    public BCryptPasswordEncoder passwordEncoder(){
        // 使用secret生成一个SecureRandom实例，以增加加密过程的随机性。
        SecureRandom secureRandom = new SecureRandom(secret.getBytes());
        return new BCryptPasswordEncoder(strength,secureRandom);
    }

    //测试代码
//    public static void main(String[] args) {
//        BCryptPasswordEncoder passwordEncoder = new PasswordConfig().passwordEncoder();
//        System.out.println(passwordEncoder.encode("123456"));
//        System.out.println(passwordEncoder.encode("123456"));
//
//        System.out.println(passwordEncoder.matches("123456", "$2a$10$dH16OzgXL/wyCpqcch5R1e78Pp9sSbiGTcz8ATo27XeKdkZ7k.Bmu"));
//        System.out.println(passwordEncoder.matches("123456", "$2a$10$qePWy1WAOm/avGDyUdobuuP8fxN2IgBFM.ZnHepG/Grh3AwnN2YCG"));
//
//    }
}
